import java.util.Scanner;

public class Array {
    //数组的概念：
    public static void main1(String[] args) {
        //数组可以存放多个同一类型的数据，数组也是一种数据类型，是引用类型，即数组就是一组数据
        //1.double类型的数组，数组名hens
        //2.
        double[] hens = {3, 5, 1, 3.4, 2, 50};
        //遍历数组得到数组所有元素的和
        //1.可以通过hens[下标]来访问数组的元素
        //数组的下标时从0开始编号的，第一个元素是hens[0],第二个元素是hens[1],以此类推
        //2.通过for循环就可以访问数组的元素
        //3.使用一个变量totalWeight将元素值累计
        //在JAVA中，可以通过数组名.length 得到数组的长度
        double totalWeight = 0;
        for (int i = 0; i < 6; i++) {
//            System.out.println("第"+(i+1)+"个值的值："+hens[i]);
            totalWeight += hens[i];
        }
    }

    //数组的使用
    public static void main2(String[] args) {
        //数组的使用：
        //1.数组的定义
        //1.1.1动态初始化1
        //数据类型 数组名[] = new 数据类型[大小]
        int a[] = new int[5];//创建了一个数组名为a的int型数组，数组中可存放5个int型数据
        //1.1.2 动态初始化2
        //1.先声明数组
        //数据类型 数组名[];
        //数据类型[] 数组名;
        int b[];
        int[] c;
        //创建数组
        //数组名 = new 数据类型[大小];
        b = new int[10];
        //注意：数组声明时，程序还未给数组分配内存空间，创建数组后才给内存分配了内存空间，分配了内存空间才可以存放的护具

        //2.数组的引用/使用
        //数组名[下标/索引]
        int i = a[3];//将a的第四个元素赋值给i
//        示例代码：循环输入5个成绩，保存到double数组中，并逐个输出
        double scores[] = new double[5];
        Scanner scanner = new Scanner(System.in);
        //输入
        for (int j = 0; j < 5; j++) {
            System.out.println("请输入第" + (j + 1) + "个元素的值");
            scores[j] = scanner.nextDouble();
        }
        //输出
        for (int j = 0; j < scores.length; j++) {
            System.out.println("第" + (j + 1) + "个元素的值为：" + scores[j]);
        }

        //============================================
        //1.2静态初始化
        //数据类型 数组名[] = {元素值1,元素值2....}
        int d[] = {2, 5, 6, 7, 8, 89, 90, 34, 56};
        //1.3数组使用注意事项和细节：
        //1.数组是多个相同类型的组合，实现对数据的统一管理
        //2.数组中的元素可以是任何数据类型，包括基本类型和引用类型，但不能混用
        //3.数组创建后，如果没有赋值，是有默认值的，不同类型的对应默认值：int 0,short 0 ,byte 0 ,long 0 ,float 0.0,double 0.0,char \u0000,boolean false , String null
        //4. 数组的下标是从0开始的。
        //5. 数组下标必须在指定范围内使用，否则：下标月结异常
        //6. 数组属于引用数据类型，数组型数据是对象（object）
    }
    //==========================================
//数组应用案例1
    public static void main3(String[] args) {
        //创建一个char类型的26个元素的数组，分别放置‘A’-‘Z’。使用for循环访问并打印出来
        char[] alph = new char[26];
        for (int i = 0; i <alph.length; i++) {
            if (i == 0) {
                alph[i] = 'A';
            } else {
                alph[i] = (char) ('A' + i);
            }
        }
        //输出
        for (int i = 0; i < alph.length; i++) {
            System.out.print(alph[i] + " ");
        }
    }
    //数组案例2：请求出一个数组int[]的最大值{4,-9,10,23}，并得到对应的下标
    public static void main(String[] args) {
        int[] arr = {4,-9,10,23};
        int Max = arr[0];
        int temp = 0;
        int ind = 0;
        for (int i = 1; i < arr.length; i++) {
            if (Max < arr[i]) {
                temp = Max;
                Max = arr[i];
                arr[i] = temp;
                ind = i;
            }
        }
        System.out.println("最大值Max = "+Max+",索引ind = "+ind);
    }
    }


